﻿/*
	control_numero_N(  obj)						controla que el valor de la componente sea un numero Natural.
	control_numero_Z(  obj)						controla que el valor de la componente sea un numero Entero.
	control_numero_R(  obj)						controla que el valor de la componente sea un numero Real.
	control_numero_Z_entre(  obj, desde, hasta)			controla que el valor de la componente sea un numero Entero y se encuentre entre los valores especificados.
	control_fecha_menor( obj, fecha_limite)			controla que la fecha cargada en la componente no sea superior a la fecha recibida en fecha_limite.

*/
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que el valor de la componente sea un numero Natural
	PARAMETROS: Componente a testear.
	CASOS:
		Si el string es nulo retorna FALSE.
		Si el string no contiene un valor numerico, borrar su contenido, muestra mensaje y retorna FALSE
		Si el string contiene un valor numerico no Natural, borrar su contenido, muestra mensaje y retorna FALSE
		Si el string contiene un numero Natural retorna TRUE

*/
function control_numero_N( obj){
	if( obj.attr("value") != ""){
		aa = parseInt( obj.attr("value"));
		if( isNaN( aa)){
			alert("No ingresó un valor numérico");
			obj.attr("value", '');
			return false;
		}else{
			if( aa > 0){
				obj.attr("value", aa);
				return true;
			}else{
				alert("Debe ingresar un número mayor a 0");
				obj.attr("value",'');
				return false;
			}
		}
	}else{
		return false;
	}
}
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que el valor de la componente sea un numero entero
	PARAMETROS: Componente a testear.
	CASOS:
		Si el string es nulo retorna FALSE.
		Si el string no contiene un valor numerico, borrar su contenido, muestra mensaje y retorna FALSE
		Si el string contiene un numero entero retorna TRUE

*/
function control_numero_Z( obj){
	if( obj.attr("value") != ""){
		aa = parseInt( obj.attr("value"));
		if( isNaN( aa)){
			alert("No ingresó un valor numérico.");
			obj.attr("value",'');
			return false;
		}else{
			obj.attr("value", aa);
			return true;
		}
	}else{
		return false;
	}
}
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que el valor de la componente sea un numero Real
	PARAMETROS: Componente a testear.
	CASOS:
		Si el string es nulo retorna FALSE.
		Si el string no contiene un valor numerico, borrar su contenido, muestra mensaje y retorna FALSE
		Si el string contiene un numero Real retorna TRUE

*/
function control_numero_R( obj){
	if( obj.attr("value") != ""){
		aa = parseFloat( obj.attr("value"));
		if( isNaN( aa)){
			alert("No ingresó un valor numérico.");
			obj.attr("value",'');
			return false;
		}else{
			obj.attr("value", aa);
			return true;
		}
	}else{
		return false;
	}
}
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que el valor de la componente sea un numero Entero y se encuentre entre los valores especificados.
	PARAMETROS: Componente a testear, limite inferior y superior para el valor Entero
	CASOS:
		Si el string es nulo retorna FALSE.
		Si el string no contiene un valor numerico Entero, borrar su contenido, muestra mensaje y retorna FALSE
		Si el string contiene un numero Entero pero se encuentra fuera del rango establecido borra su contenido, muestra un mensaje y retorna FALSE.
		Si el string contiene un numero entero dentro del rango establecido retorna TRUE

*/			
function control_numero_Z_entre( obj, desde, hasta){
	if( obj.attr("value") != ""){
		x = parseInt( obj.attr("value"));
		if( isNaN( x)){
			alert( "No ingresó un valor numérico. Por favor, corríjalo.");
			obj.attr("value",'');
			return false;
		}else{
			if( x > hasta | x < desde){
				alert( "Error: El número ingresado se encuentra fuera del rango permitido.");
				obj.attr("value",'');
				return false;
			}else{
				obj.attr("value", x);
				return true;
			}
		}
	}else{
		return false;
	}
	
}
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que la fecha cargada en la componente no sea superior a la fecha recibida en fecha_limite.
	PARAMETROS: Componente a testear, String con la fecha limite.
	FORMATOS: 
	CASOS:
		Si la fecha es nula muestra mensaje y retorna FALSE.
		Si la fecha no cumple el formato AAAA/MM/DD muestra mensaje y retorna FALSE.
		Si la fecha cumple el formato pero contiene un dia o mes invalido muestra mensaje y retorna FALSE.
		Si la fecha es valida pero es mayor a la fecha actual muestra mensaje y retorna FALSE.
		Si la fecha es valida y es no mayor a la fecha actual retorna TRUE.

*/
function control_fecha_menor( obj, fecha_limite){
	var saa = Number( fecha_limite.substring(6,10));
	var smm = Number( fecha_limite.substring(3,5));
	var sdd = Number( fecha_limite.substring(0,2));
	if(( aa > saa) | ((aa == saa) & ( mm > smm)) | ((aa == saa) & ( mm == smm) & ( dd > sdd))){
		alert("La fecha introducida es mayor a la esperada. Por favor, corríjala.\nSe espera una fecha menor o igual a la fecha actual.");
		return false;
	}
	obj.value = obj.value.substring(0,4) + "-"+ obj.value.substring(5,7) + "-"+ obj.value.substring(8,10);
	return true;
}
// -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
/*
	FUNCION: controla que el formato de la hora sea 00:00 y que la hora sea valida.
	PARAMETROS: Objeto con el string con la hora a controlar.
	CASOS:
		Si la hora es nula muestra mensaje y retorna FALSE.
		Si la hora no cumple el formato DD/MM/AAAA muestra mensaje y retorna FALSE.
		Si la hora cumple el formato pero contiene un dia o mes invalido muestra mensaje y retorna FALSE.
		Si la hora es valida pero es mayor a la hora actual muestra mensaje y retorna FALSE.
		Si la hora es valida y es no mayor a la hora actual retorna TRUE.

*/
function control_hora( obj){
	var hh = obj.value.substring(0,2);
	var mm = obj.value.substring(3,5);
	if(( hh > 23) | ( hh < 0) | ( mm > 59) | ( mm < 0)){
		alert( "La hora ingresada no es correcta. Por favor, corríjala. El formato esperado es hh:mm");
		obj.value = "00:00";
		return false;
	}
	return true;
}